home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Puzzle / rollon / rollon.dcr / 00004_Havok Physics (No HKE).ls < prev    next >
Encoding:
Text File  |  2004-09-09  |  3.2 KB  |  102 lines

  1. property pInitialized, pHavok, pTimeStep, pSubSteps, pPaused, pScale, pTolerance, pSprite
  2. global gHavok
  3.  
  4. on beginSprite me
  5.   pHavok = me.getHavokCastMember(pHavok)
  6.   me.initializePhysics()
  7. end
  8.  
  9. on endSprite me
  10.   if pInitialized then
  11.     pHavok.shutDown()
  12.     pInitialized = 0
  13.   end if
  14. end
  15.  
  16. on exitFrame me
  17.   if not pPaused then
  18.     pHavok.step(pTimeStep, pSubSteps)
  19.   end if
  20. end
  21.  
  22. on initializePhysics me
  23.   pPaused = 0
  24.   pSprite = sprite(me.spriteNum)
  25.   pHavok = member(pHavok)
  26.   if pInitialized then
  27.     pHavok.shutDown()
  28.   end if
  29.   pInitialized = 1
  30.   pHavok.Initialize(pSprite.member, pTolerance, pScale)
  31.   gHavok = pHavok
  32.   put "Initialized Physics"
  33. end
  34.  
  35. on togglePausePhysics me
  36.   pPaused = not pPaused
  37. end
  38.  
  39. on isOKToAttach aScript, aSpriteType, aSpriteNum
  40.   case aSpriteType of
  41.     #graphic:
  42.       case sprite(aSpriteNum).member.type of
  43.         #shockwave3d:
  44.           return 1
  45.         #text:
  46.           if sprite(aSpriteNum).member.displayMode = #mode3d then
  47.             return 1
  48.           else
  49.             return 0
  50.           end if
  51.       end case
  52.     #script:
  53.       return 0
  54.   end case
  55. end
  56.  
  57. on getPropertyDescriptionList aScript
  58.   if the floatPrecision < 4 then
  59.     set the floatPrecision to 4
  60.   end if
  61.   if the currentSpriteNum > 0 then
  62.     tGPDList = [:]
  63.     tList = []
  64.     tList = aScript.getHavokCastMembers(tList)
  65.     tGPDList[#pHavok] = [#comment: "Which Havok Cast Member", #format: #string, #range: tList, #default: tList[1]]
  66.     tGPDList[#pTolerance] = [#comment: "Tolerance", #format: #float, #default: 4]
  67.     tGPDList[#pTimeStep] = [#comment: "Time Step", #format: #float, #default: 0.025]
  68.     tGPDList[#pSubSteps] = [#comment: "Substeps", #format: #integer, #default: 5]
  69.     tGPDList[#pScale] = [#comment: "World Scale", #format: #float, #default: 0.0254]
  70.     return tGPDList
  71.   end if
  72. end
  73.  
  74. on getBehaviorTooltip aScript
  75.   tString1 = "Updates 3D models based on a physical simulation" & RETURN & RETURN
  76.   tString2 = "-" && "Type" && ":" && "Independent Action" & RETURN
  77.   tString3 = "-" && "Dependencies" && ":" && "None" & RETURN
  78.   return tString1 & tString2 & tString3
  79. end
  80.  
  81. on getBehaviorDescription aScript
  82.   tString1 = "HAVOK PHYSICS" & RETURN & RETURN & "Enables the Havok engine for the sprite. " & "Any created rigid bodies from Shockwave 3D models are then updated based on a physics simulation." & EMPTY & RETURN & RETURN & "This independent behavior does not require a trigger." & RETURN & RETURN & "ACTIONS AND THEIR REQUIRED TRIGGERS:" & RETURN & "- None" & RETURN & RETURN & "PARAMETERS:" & RETURN & "- Havok Cast Member" & RETURN & RETURN & "- Tolerance" & RETURN & RETURN & "- Timestep" & RETURN & RETURN & "- Substeps" & RETURN & RETURN & "- World Scale" & RETURN & RETURN & "PERMITTED SPRITE TYPES:" & RETURN & "- Shockwave 3D"
  83.   return tString1
  84. end
  85.  
  86. on getHavokCastMembers me, aList
  87.   repeat with j = 1 to the number of castMembers of castLib 1
  88.     if member(j).type = #havok then
  89.       aList.add(j & ":" & member(j).name)
  90.     end if
  91.   end repeat
  92.   aList.add("None")
  93.   return aList
  94. end
  95.  
  96. on getHavokCastMember me, memberName
  97.   nameStr = chars(memberName, offset(":", memberName) + 1, memberName.length)
  98.   nameInt = chars(memberName, 1, offset(":", memberName) - 1)
  99.   nameInt = integer(nameInt)
  100.   return member(nameInt)
  101. end
  102.